package fr.nts.framework.core.service;

import java.util.Map;

import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.exception.VelocityException;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.ui.velocity.VelocityEngineUtils;

import fr.nts.framework.core.commun.enumeration.Encoding;

/**
 * Permet de générer du texte à partir de template velocity
 * 
 * @author sco
 * @version 1.0.0
 */
public class TemplateMaker{

	/**
	 * Le moteur velocity
	 */
	private VelocityEngine velocityEngine;
	
	
    /**
	 * Prépare un contenu texte à partir d'une liste de valeurs et un template associé
	 */
	public String generateContent(final Map<String, Object> values,
			                      final String templateToApply,
			                      final Encoding encoding) throws VelocityException{

		// Génère le contenu
		String content = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine,
						                                             templateToApply,
						                                             encoding.getValue(),
						                                             values);

		
		return content;
	}


	// GETTER / SETTER
	@Required
	public void setVelocityEngine(VelocityEngine velocityEngine){
		this.velocityEngine = velocityEngine;
	}
}